﻿#include "mainwindow.h"
#include <QFileDialog>
#include <QDateTime>
#include <QDebug>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    // 设置窗口标题
    setWindowTitle("文件信息显示");

    // 初始化 UI 元素
    browseButton = new QPushButton("浏览文件或目录", this);
    infoLabel = new QLabel("文件的信息将会显示在这里.", this);
    infoLabel->setWordWrap(true); // 自动换行

    // 设置主窗口的中央小部件
    centralWidget = new QWidget(this);
    setCentralWidget(centralWidget);

    // 布局管理器
    layout = new QVBoxLayout(centralWidget);
    layout->addWidget(browseButton); // 添加浏览按钮到布局
    layout->addWidget(infoLabel);    // 添加信息标签到布局

    // 连接信号和槽
    connect(browseButton, &QPushButton::clicked, this, &MainWindow::on_browseButton_clicked);
}

MainWindow::~MainWindow()
{
}

void MainWindow::on_browseButton_clicked()
{
    // 弹出文件和目录选择对话框
    QString filePath = QFileDialog::getOpenFileName(this, tr("Select File or Directory"),
                                                    QDir::homePath(),
                                                    tr("All Files (*.*)"));

    if (filePath.isEmpty()) {
        // 如果未选择文件，则弹出目录选择对话框
        filePath = QFileDialog::getExistingDirectory(this, tr("Select Directory"), QDir::homePath());
    }

    if (!filePath.isEmpty()) {
        displayFileInfo(filePath); // 显示选定文件或目录的详细信息
    }
}

void MainWindow::displayFileInfo(const QString &path)
{
    // 使用 QFileInfo 获取文件或目录信息
    QFileInfo fileInfo(path);

    // 准备要显示的信息字符串
    QString info;
    info += "路径: " + fileInfo.absoluteFilePath() + "\n";
    info += "名称: " + fileInfo.fileName() + "\n";
    info += "大小: " + QString::number(fileInfo.size()) + " bytes\n";
    info += "是否为目录: " + QString(fileInfo.isDir() ? "是" : "否") + "\n";
    info += "是否为文件: " + QString(fileInfo.isFile() ? "是" : "否") + "\n";

    // 检查是否支持获取文件创建时间和最后修改时间
    if (fileInfo.exists()) {
        info += "上一次修改的时间: " + fileInfo.lastModified().toString("yyyy-MM-dd HH:mm:ss") + "\n";
        info += "文件创建时间: " + fileInfo.created().toString("yyyy-MM-dd HH:mm:ss") + "\n";
    }

    info += "是否可读: " + QString(fileInfo.isReadable() ? "是" : "否") + "\n";
    info += "是否可写: " + QString(fileInfo.isWritable() ? "是" : "否") + "\n";
    info += "是否可执行: " + QString(fileInfo.isExecutable() ? "是" : "否") + "\n";

    // 在标签上显示信息
    infoLabel->setText(info);
}

